<?php
class Aduanas_GrupousuarioController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here  edite para probar Anda*/
    }

    public function indexAction()
    {
        $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
        $parametrosNamespace->unlock ();
        $parametrosNamespace->parametrosBusqueda = null;
        $parametrosNamespace->cantidadFilas = null;
        $parametrosNamespace->Application_Model_DbTable = "Application_Model_DbTable_Grupousuario";
        $parametrosNamespace->busqueda = "desc_grupo_usuario";
        $parametrosNamespace->lock ();
    }

    public function listarAction() {
		$this->_helper->viewRenderer->setNoRender ( true );

		$cantidadFilas = $this->getRequest ()->getParam ( "rows" );
		if (! isset ( $cantidadFilas )) {
			$cantidadFilas = 10;
		}
		$parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		$parametrosNamespace->unlock();
		$parametrosNamespace->cantidadFilas = $cantidadFilas;

		$page = $this->getRequest ()->getParam ( "page" );
		if (! isset ( $page )) {
			$page = 1 ;
		}

		$this->view->headScript ()->appendFile ( $this->view->baseUrl () . '/js/bootstrap.js' );
	 	$this->view->headScript ()->appendFile ( $this->view->baseUrl () . '/js/grillasmodulos/aduanas/gridGrupousuario.js' );

//	 	$where = $parametrosNamespace->parametrosBusqueda;
                //$where = "activo = 'S'";
	 	$where = $parametrosNamespace->parametrosBusqueda;
                if(!isset($where)) $where = 1;                
		$servCon = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);

		if($where !=null) {
			$result = $servCon->getRowsByWhere($where);
		} else {
			$result = $servCon->getAllRowsOrdered(array($parametrosNamespace->busqueda));
		}
		$parametrosNamespace->lock();
                $pagina = self::obtenerPaginas($result,$cantidadFilas,$page);
		echo $this->_helper->json ( $pagina );
	}

	private function obtenerPaginas($result,$cantidadFilas,$page){
		$this->_paginator = Zend_Paginator::factory ($result);
	 	$this->_paginator->setItemCountPerPage ( $cantidadFilas );
	 	$this->_paginator->setCurrentPageNumber($page);
		$pagina ['rows'] = array ();
		foreach ( $this->_paginator as $item ) {
                        if($item["activo"] == 'S') $activo = 'Activo'; 
                        else $activo = 'Desactivado';                    
			$arrayDatos ['cell'] = array(  null,
                                                        $item["cod_grupo_usuario"],
                                                        $item["desc_grupo_usuario"],
                                                        $activo,
                                                        $item["activo"]);
                        
			$arrayDatos ['columns'] = array("modificar",
                                                        "cod_grupo",
                                                        "desc_grupo",
                                                        "desc_activo",
                                                        "activo");
			array_push ( $pagina ['rows'],$arrayDatos);
		}
		$pagina ['records'] = count ( $result );
		$pagina ['page'] = $page;
		$pagina ['total'] = ceil ( $pagina ['records'] / $cantidadFilas );

		if($pagina['records'] == 0){
			$pagina ['mensajeSinFilas'] = true;
		}
                $permisosNamespace = new Zend_Session_Namespace('permisos');
                $permisosNamespace->unlock();
                $pagina ['nuevo'] = ($permisosNamespace->permiso_insert == 'S')?true:false;
                $pagina ['editar'] = ($permisosNamespace->permiso_update == 'S')?true:false;
                $pagina ['borrar'] = ($permisosNamespace->permiso_delete == 'S')?true:false;
                $pagina ['ver'] = ($permisosNamespace->permiso_list == 'S')?true:false;
                $permisosNamespace->lock();
               

		$parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		$parametrosNamespace->unlock ();
		$parametrosNamespace->listadoImpuestos = $pagina ['rows'];
		$parametrosNamespace->lock ();

		return $pagina;
	}

    public function buscarAction(){
        $this->_helper->viewRenderer->setNoRender ( true );

        $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
        $parametrosNamespace->unlock ();

        $cantidadFilas = $this->getRequest ()->getParam ( "rows" );
        if (! isset ( $cantidadFilas )) {
                $cantidadFilas = $parametrosNamespace->cantidadFilas;
        }
        $page = $this->getRequest ()->getParam ( "page" );
        if (! isset ( $page )) {
                $page = 1 ;
        }

        $json_rowData = $this->getRequest ()->getParam ("data");
        $rowData = json_decode($json_rowData);
//        print_r($rowData);
        $servCon = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
        $where = "";

        if($rowData->descripcionBusqueda != null){
                $where.="UPPER($parametrosNamespace->busqueda) like '%".
                        strtoupper(trim($rowData->descripcionBusqueda))."%'";
        }

        $parametrosNamespace->parametrosBusqueda = $where;
        $parametrosNamespace->lock ();


        $result = $servCon->getRowsByWhere($where);
        $pagina = self::obtenerPaginas($result,$cantidadFilas,$page);
        $jsondata = $this->_helper->json ( $pagina );
        echo $jsondata;
    }

    public function eliminarAction(){
		$this->_helper->viewRenderer->setNoRender ( true );
		$id = $this->getRequest ()->getParam ( "id" );           
                $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
		try{
                    $db = Zend_Db_Table::getDefaultAdapter();
                    $db->beginTransaction();
                    $servCon = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
//                    die($id);
                    $servCon->deleteRowById(array("cod_grupo_usuario"=>$id));
                    $db->commit();
		    echo json_encode(array("result" => "EXITO"));
	    }catch( Exception $e ) {
	    	echo json_encode(array("result" => "ERROR","mensaje"=>$e->getCode()));
			$db->rollBack();
		}
	}

	public function guardarAction(){
            $this->_helper->viewRenderer->setNoRender ( true );
            $json_rowData = $this->getRequest ()->getParam ( "parametros" );
            $rowData = json_decode($json_rowData);
            $rowClass = new Application_Model_Grupousuario();
            self::almacenardatos($rowClass,$rowData);
	}

	public function modificarAction(){
            $this->_helper->viewRenderer->setNoRender ( true );
            $json_rowData = $this->getRequest ()->getParam ( "parametros" );
            $rowData = json_decode($json_rowData);
            $rowClass = new Application_Model_Grupousuario();
            self::almacenardatos($rowClass,$rowData);
	}

        public function almacenardatos($rowClass,$rowData){
     	try{
                $parametrosNamespace = new Zend_Session_Namespace ( 'parametros' );
     		$service = new Application_Model_DataService($parametrosNamespace->Application_Model_DbTable);
        	$db = Zend_Db_Table::getDefaultAdapter();
        	$db->beginTransaction();
//                die($rowData->cod_centro_costos_cta_cliente);
                $rowClass->setCod_grupo_usuario($rowData->cod_grupo);
                $rowClass->setDesc_grupo_usuario(trim(utf8_decode($rowData->desc_grupo)));
                $rowClass->setActivo($rowData->activo);                                                                              
                $result = $service->saveRow($rowClass);
//                print_r($result); die();
	    	$db->commit();
	    	echo json_encode(array("result" => "EXITO"));
        }catch( Exception $e ) {
	    	echo json_encode(array("result" => "ERROR","mensaje"=>$e->getCode(),"mensaje1"=>$e->getMessage()));
		$db->rollBack();
	}
    }
    


}


